﻿#define _CRT_SECURE_NO_WARNINGS 1;
//#include "Stack.h"
//
//class Data
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = _month;
//		_day = day;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//
//
//typedef struct ListNodeCpp
//{
//private:
//	ListNodeCpp* next;
//	int val;
//
//public:
//	void Init(int x)
//	{
//		next = nullptr;
//		val = x;
//	}
//
//}LTNode;
//
//
//
//int main()
//{
//	Data d1;
//	d1.Init(2025, 8, 4);
//	LTNode l1;
//	l1.Init(2);
//	Stack st;
//	st.Init();
//	st.Push(1);
//	st.Push(2);
//	cout << st.Top() << endl;
//	st.Destroy();
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//inline int add(int x, int y)
//{
//	return x + y;
//}
//
//namespace wlc
//{
//	class Date
//	{
//	public:
//		void Init(int year, int month, int day)
//		{
//			_year = year;
//			_month = month;
//			_day = day;
//		}
//
//		void print()
//		{
//			cout << this << endl;
//			cout << _year << ":" << _month << ":" << _day << endl;
//		}
//
//	private:
//		int _year;		//声明
//		int _month;
//		int _day;
//	};
//}
//
//int main()
//{
//	int x = add(1, 2);
//	wlc::Date d1 ,d2;  //类实例化对象
//
//	cout << "&d1 = " << &d1 << endl;
//	cout << "&d2 = " << &d2 << endl;
//
//	d1.Init(2025, 8, 5);
//	d1.print();
//
//	d2.Init(2025, 11, 11);
//	d2.print();
//
//	cout << sizeof(wlc::Date) << endl;
//	cout << sizeof(d1) << endl;
//
//	cout << x << endl;
//	return 0;
//}

//#include<iostream>
//using namespace std;
//class A
//{
//public:
//	void Print()
//	{
//		cout << "A::Print()" << endl;
//	}
//
//	int _a;
//};
//
//int main()
//{
//	A* p = nullptr;
//	p->Print();
//	(*p).Print();
//	return 0;
//}

//#include "Stack.h"
//
//int main()
//{
//	Stack s;
//	s.Init();
//	s.Push(1);
//	s.Push(2);
//	s.Push(3);
//	s.Push(4);
//	while (!s.Empty())
//	{
//		cout << s.Top() << endl;
//		s.Pop();
//	}
//	s.Destroy();
//	return 0;
//}


//#include <iostream>
//using namespace std;
//
//class Date
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void print()
//	{
//		cout << _year << ":" << _month << ":" << _day << endl;
//	}
//
//	~Date()
//	{
//		cout << "~Date()" << endl;
//	}
//
//	Date(int year = 1, int month = 1, int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	Date(Date& d)
//	{
//		_year = d._year;
//		_month = d._month;
//		_day = d._day;
//	}
//
//
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//void fun(Date d)
//{
//
//}
//
//int main()
//{
//	Date d1(2024,12,5);
//	d1.print();
//
//	Date d2(d1);
//	d2.print();
//
//	Date d3(d1);
//	d3.print();
//
//	Date d4 = d1;
//	d4.print();
//
//	fun(d4);
//
//	return 0;
//}


//#include <iostream>
//using namespace std;
//
//class Date
//{
//public:
//
//	bool operator==(const Date& d2)const
//	{
//		return _year == d2._year &&
//			_month == d2._month &&
//			_day == d2._day;
//	}
//
//	int operator-(const Date& d2)const
//	{
//
//	}
//
//	Date operator+(int x)
//	{
//		
//	}
//
//
//	Date(int year = 1, int month = 1,int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void prrint()
//	{
//		cout << "year" << ":" << "month" << ":" << "day" << endl;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
////1.提供函数，成员函数(getXXX())
////2.友缘
////3.直接放到类里面
////bool operator==(const Date& d1,const Date& d2)
////{
////	return d1._year == d2._year && 
////		   d1._month == d2._month && 
////		   d1._day == d2._day;
////}
//
//
//int main()
//{
//	const Date d1(2025,8,7);
//	const Date d2 = d1;
//
//	if (d1.operator==(d2))
//	{
//		cout << "d1 == d2" << endl;
//	}
//	else
//	{
//		cout << "d1 != d2" << endl;
//	}
//
//	return 0;
//}


//#include <iostream>
//using namespace std;
//
//class Date
//{
//public:
//	Date(int& x,Time time,int year = 1,int month = 1,int day = 1)
//		//定义初始化的位置
//		:_year(year)
//		,_month(month)
//		,_day(day)
//		,ref(x)
//		,_i(day)
//		,_time(time)
//	{
//		
//	}
//
//	void print() const
//	{
//		cout << _year<<'/' << _month << '/' << _day;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//	int& ref;
//	const int _i;
//	Time _time;
//};
//
//
//class Time
//{
//public:
//	Time(int time)
//	{
//		
//	}
//	 
//private:
//	int _time;
//};
//
//int main()
//{
//	int xx;
//	Time t1(1);
//	Date d1(xx,t1);
//	d1.print();
//
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	// 构造函数explicit就不再⽀持隐式类型转换
//	//explicit A(int a1)
//	A(int a1)
//		:_a1(a1)
//	{}
//	//explicit A(int a1, int a2)
//	A(int a1, int a2)
//		:_a1(a1)
//		, _a2(a2)
//	{}
//	void Print()
//	{
//		cout << _a1 << " " << _a2 << endl;
//	}
//
//	int Get() const
//	{
//		return _a1 + _a2;
//	}
//private:
//	int _a1 = 1;
//	int _a2 = 2;
//};
//class B
//{
//public:
//	B(const A& a)
//		:_b(a.Get())
//	{}
//private:
//	int _b = 0;
//};
//int main()
//{
//	// 1构造⼀个A的临时对象，再⽤这个临时对象拷⻉构造aa3
//	// 编译器遇到连续构造+拷⻉构造->优化为直接构造
//	A aa1 = 1;
//	//A aa1(1);
//	aa1.Print();
//	const A& aa2 = 1;
//	// C++11之后才⽀持多参数转化
//	A aa3 = { 2,2 };
//	// aa3隐式类型转换为b对象
//	// 原理跟上⾯类似
//	B b = aa3;
//	const B& rb = aa3;
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	A()
//	{
//		++_scount;
//	}
//	A(const A& t)
//	{
//		++_scount;
//	}
//	~A()
//	{
//		--_scount;
//	}
//	static int GetACount()
//	{
//		return _scount;
//	}
//private:
//	// 类⾥⾯声明
//	static int _scount;
//};
//// 类外⾯初始化
//int A::_scount = 0;
//
//int main()
//{
//	cout << A::GetACount() << endl;
//	A a1, a2;
//	A a3(a1);
//	cout << A::GetACount() << endl;
//	cout << a1.GetACount() << endl;
//	// 编译报错：error C2248: “A::_scount”: ⽆法访问 private 成员(在“A”类中声明)
//	//cout << A::_scount << endl;
//	return 0;
//}


#include <iostream>
using namespace std;

class Date
{
public:
	friend ostream& operator<<(ostream& out, const Date& d)
	{
		cout << d._year << '/' << d._month << '/' << d._day << endl;

		return out;
	}

	int func(int n)
	{


		return n;
	}

	Date(int year = 2025, int month = 12, int day = 25)
		:_year(year)
		, _month(month)
		, _day(day)
	{

	}


private:
	int _year;
	int _month;
	int _day;

};

int main()
{
	Date d1(1, 2, 3);
	cout << d1;

	cout << Date().func(10) << endl;

	return 0;
}
